Realistic simulation of a virtual world and its population has long been an interesting engagement for computer programmers. Such simulations have wide application in academic fields such as math and statistics, anthropology, sociology, and digital humanities. Certain embodiments have found significant commercial or critical success in the video game industry; examples include Sid Maier's Civilization games and Maxis' SimCity and The Sims games. Of particular interest with respect to the present invention is the simulation game Slaves to Armok: God of Blood Chapter II: Dwarf Fortress (“Dwarf Fortress”). The intrigue of Dwarf Fortress is in its combination of procedurally-generated world terrain, semi-autonomous entity activity, and adept memory management to allow for complex simulations. These features provide a realistic virtual world populated by organic beings that appear to have unique personalities.
Environmental simulations continue to increase in complexity in order to more closely approximate a real-world environment. Unfortunately, simulations are both intrinsically limited by their own programming and externally limited by the available resources of the computer system executing the simulation. Intrinsic limitations arise where entity actions and interactions are hard-coded, because only a finite number of actions and results can be pre-programmed into the simulation. Because not every possible real-world situation may be represented with source code, a non-realistic repetitiveness of actions and results arises. External limitations arise when the simulation attempts to store and retrieve too much data from the memory storage locations of the computing system. A large population of simulated entities, or a large amount of complex simulation terrain, may tax the system too much, resulting in either poor performance or sacrifice of realism.
It is an object of this invention to provide a method of simulating a virtual world that makes entity interactions more organic. It is a further object of the invention to instill a hierarchy of needs in the entity. It is a further object to simulate entity interactions based on the desire to fulfill the entity's needs. It is another object to provide a simulated environment for the entity that properly manages the memory of the computer on which the simulation is running.